package com.system.service.impl;

import com.system.mapper.EmerMapper;
import com.system.po.sep.*;
import com.system.service.EmerService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Service
public class EmerServiceimpl implements EmerService {

    @Autowired
    private EmerMapper emerMapper;


    @Override
    public ArrayList<Sep> selectfindall(Integer id) {                //树状结构
        ArrayList<Sep> list = new ArrayList<>();
        Sep sep=new Sep();
        List<Sep> selectfindall = emerMapper.selectfindall(id);
        for (int i = 0; i < selectfindall.size(); i++) {
            Sep sep1= selectfindall.get(i);
            BeanUtils.copyProperties(sep1, sep);
            List<Sep_One> selectfindallone = emerMapper.selectfindallone(sep1.getId());
            ArrayList<Sep_One> list2 = new ArrayList<>();

            for (int j = 0; j < selectfindallone.size(); j++) {
                Sep_One sep_one1= selectfindallone.get(j);
                Sep_One sep_one=new Sep_One();
                BeanUtils.copyProperties(sep_one1, sep_one);
                list2.add(sep_one);
                List<Sep_Two> selectfindalltwo = emerMapper.selectfindalltwo(sep_one.getId());
                ArrayList<Sep_Two> list3 = new ArrayList<>();

                    for (int z = 0; z < selectfindalltwo.size(); z++) {
                        if(sep_one1.getId().equals(selectfindalltwo.get(z).getSep_one_id())) {
                            Sep_Two sep_two2 = selectfindalltwo.get(z);

                            Sep_Two sep_two = new Sep_Two();
                            BeanUtils.copyProperties(sep_two2, sep_two);
                            list3.add(sep_two);
                        }
                    sep_one.setChildren(list3);
                }
            }
            sep.setChildren(list2);
        }
        list.add(sep);
        return list;
    }



    @Override
    public Boolean addsiblingnode(Sep_One sep_one) {        //新增兄弟节点
            Sep_One sep_one1=new Sep_One();
            Date date = new Date();
            SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
            sep_one1.setUserlogin_id(sep_one.getUserlogin_id());
            sep_one1.setTite(sep_one.getTite()); //标题
            sep_one1.setContent(sep_one.getContent());  //内容
            sep_one1.setUserlogin_sep_repair(sep_one.getUserlogin_sep_repair());
            sep_one1.setUserlogin_sep_submit(sep_one.getUserlogin_sep_submit());
            sep_one1.setState("0");
            sep_one1.setGmt_create(dateFormat.format(date));
            sep_one1.setGmt_modified(dateFormat.format(date));
            sep_one1.setSep_id(sep_one.getSep_id());
            Boolean addsiblingnode = emerMapper.addsiblingnode(sep_one1);

            return addsiblingnode;
        }

    @Override
    public Boolean addChildnode(Integer id, Sep_Two sep_two) {       //新增子节点

        Sep_Two sep_two1=new Sep_Two();
        sep_two1.setTitles(sep_two.getTitles());
        sep_two1.setContent(sep_two.getContent());
        sep_two1.setKeywords(sep_two.getKeywords());
        sep_two1.setSep_one_id(id);
        Boolean childnode=emerMapper.addChildnode(sep_two1);
        return childnode;
    }

    @Override
    public Boolean editcurrentcontent(Sep_One_Edit sep_one_edit) {  //修改兄弟节点
        Sep_One sep_one1=new Sep_One();
        Date date = new Date();
        SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
        sep_one1.setId(sep_one_edit.getId());
        sep_one1.setContent(sep_one_edit.getContent());
        sep_one1.setUserlogin_sep_repair("1");          //修改人
        sep_one1.setGmt_create(dateFormat.format(date));
        Boolean editcurrent=emerMapper.editcurrentcontent(sep_one1);
        return editcurrent;
    }
    @Override
    public Boolean editchildcontent(Sep_Two_Edit sep_two_edit) {           //修改子节点
        Sep_Two sep_two=new Sep_Two();
        sep_two.setId(sep_two_edit.getId());
        sep_two.setTitles(sep_two_edit.getTitles());
        sep_two.setKeywords(sep_two_edit.getKeywords());
        sep_two.setContent(sep_two_edit.getContent());
        Boolean editchildcontent=emerMapper.editchildcontent(sep_two);
        return editchildcontent;
    }

    @Override
    public Boolean deletenode(Integer id) {       //删除兄弟节点
        Integer selectCount =emerMapper.selectCount(id);
        System.out.println("xxxxxxxxxx:"+selectCount);
        if(selectCount>0){
            return  false;
        }else {
            Boolean deleteById = emerMapper.deleteById(id);
            return deleteById;
        }


    }

    @Override
    public Boolean deletechildnode(Integer id) {           //删除子节点

        Boolean deletechildnode = emerMapper.deletechildnode(id);
        return deletechildnode;
    }

    @Override
    public Sep_One lookupcurrentcontent(Integer id) {           //查找兄弟节点
        return  emerMapper.lookupcurrentcontent(id);
    }

    @Override
    public Sep_Two lookupchildnode(Integer id) {

        return emerMapper.lookupchildnode(id);
    }

}



